package com.edu.exam.enums.curriculum.questionbank;

/**
 * 媒体类型枚举
 * 定义试题中可用的媒体资源类型
 *
 * @author System
 * @version 1.0.0
 */
public enum MediaType {

    /**
     * 图片类型
     */
    IMAGE("图片", "jpg,png,jpeg,gif,bmp,webp"),

    /**
     * 音频类型
     */
    AUDIO("音频", "mp3,wav,acc,m4a,flac"),

    /**
     * 视频类型
     */
    VIDEO("视频", "mp4,avi,mov,wmv,flv,mkv"),

    /**
     * 文档类型
     */
    DOCUMENT("文档", "pdf,doc,docx,ppt,pptx,txt"),

    /**
     * 动画类型
     */
    ANIMATION("动画", "gif,swf,fla"),

    /**
     * 其他类型
     */
    OTHER("其他", "*");

    private final String description;
    private final String extensions;

    MediaType(String description, String extensions) {
        this.description = description;
        this.extensions = extensions;
    }

    public String getDescription() {
        return description;
    }

    public String getExtensions() {
        return extensions;
    }

    /**
     * 根据文件扩展名判断媒体类型
     *
     * @param extension 文件扩展名
     * @return 对应的媒体类型
     */
    public static MediaType fromExtension(String extension) {
        if (extension == null || extension.trim().isEmpty()) {
            return OTHER;
        }

        String ext = extension.toLowerCase().trim();
        if (ext.startsWith(".")) {
            ext = ext.substring(1);
        }

        for (MediaType type : values()) {
            if (type.getExtensions().contains(ext)) {
                return type;
            }
        }

        return OTHER;
    }
}